Digital signal compression is widely used in many multimedia applications and devices. Digital signal compression using a coder/decoder (codec) allows streaming media, such as audio or video signals to be transmitted over the Internet or stored on compact discs. A number of different standards of digital video compression have emerged, including H.261, H.263; DV; MPEG-1, MPEG-2, MPEG-4, VC1; and AVC (H.264). These standards, as well as other video compression technologies, seek to efficiently represent a video frame picture by eliminating the spatial and temporal redundancies in the picture and among successive pictures. Through the use of such compression standards, video contents can be carried in highly compressed video bit streams, and thus efficiently stored in disks or transmitted over networks.
MPEG-4 AVC (Advanced Video Coding), also known as H.264, is a video compression standard that offers significantly greater compression than its predecessors. The H.264 standard is expected to offer up to twice the compression of the earlier MPEG-2 standard. The H.264 standard is also expected to offer improvements in perceptual quality. As a result, more and more video content is being delivered in the form of AVC(H.264)-coded streams. Two rival DVD formats, the HD-DVD format and the Blu-Ray Disc format support H.264/AVC High Profile decoding as a mandatory player feature. AVC(H.264) coding is described in detail in ISO/IEC 14496-10:2009, “Information technology—Coding of audio-visual objects—Part 10: Advanced Video Coding, Edition 5” May 13, 2009, which is incorporated herein by reference. A copy may be downloaded at the following URL: http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_detail.htm?csnumber=52974.
Video signal coding tends to be a computationally intensive application requiring a high memory bandwidth. Multi-processor systems have been developed with high computing performance and relatively lower power consumption. Some multi-processor systems have dedicated local memory associated with each processor core. It is appealing to implement video encoding on a multi-processor platform since the memory bandwidth in such systems may scale with the number of processors. However, due to the complexity of the encoding process it is difficult to optimize parallel video encoding for multi-processor platforms having more than two processor cores.
The video encoding process removes any spatial and temporal redundancies between and within video pictures, which creates data dependencies among video pixels. When encoding a video stream in parallel, these data dependencies tend to slow down the encoding process or lower the quality of the video stream being encoded. For example, encoding multiple sections of a given video picture in parallel may require each section to use data from another section, which is momentarily unavailable because that given section is currently being processed. The data dependency issue may be resolved by slowing down the encoding process, such that sections are sequentially encoded to avoid missing data dependencies. However, this may cause very large encoding delays. The data dependency issue may also be resolved by creating artificial data isolations to fill in for the currently inaccessible data dependency. This, however, may reduce the encoding quality of the video stream.
It is within this context that embodiments of the present invention arise.